í í늿 ìì€í ì ì¬ì©í ìœë ìì±ì ìžê³ë¥Œ íííŽ ë³Žìžì. ë€ìí íë¡ê·žëë° ìžìŽì íë«íŒìì ìœë륌 ìì±íêž° ìí ìŽì , ëªšë² ì¬ë¡, ìžêž° ìë ë구ì ëíŽ ìì볎ìžì.
í í늿 ìì€í ì ìŽì©í ìœë ìì±: ì¢ í© ê°ìŽë
ìíížìšìŽ ê°ë° ë¶ìŒìì íšìšì±ê³Œ ì ì§ë³Žìì±ì ê°ì¥ ì€ìí©ëë€. ìì€ ìœë, ì€ì íìŒ ëë êž°í 결곌묌ì ìì±ì ìëííë êž°ì ìž ìœë ìì±ì ìŽë¬í 목í륌 ë¬ì±íêž° ìí ê°ë ¥í ëêµ¬ë¡ ë¶ìíìµëë€. í í늿 ìì€í ì ìŽ ê³Œì ìì ì€ìí ìí ì íë©°, ìœë ìì± ë¡ì§ì ì ìíë 구조íëê³ ì ì°í ë°©ë²ì ì ê³µí©ëë€. ìŽ ì¢ í© ê°ìŽëììë í í늿 ìì€í ì ì¬ì©í ìœë ìì±ê³Œ êŽë šë ê°ë , ìŽì , ëªšë² ì¬ë¡ ë° ë늬 ì¬ì©ëë ë구ë€ì ìŽíŽëŽ ëë€.
ìœë ìì±ìŽë 묎ììžê°?
ìœë ìì±ìŽë ìì ìì€ì ëª ìžë¡ë¶í° ìì€ ìœëë ë€ë¥ž 결곌묌(ì: ì€ì íìŒ, 묞ì)ì ìëìŒë¡ ìì±íë íë¡ìžì€ì ëë€. ìŽ ëª ìžë ë°ìŽí° 몚ëž, ëë©ìž í¹í ìžìŽ(DSL) ëë í í늿 ì§í©ê³Œ ê°ì ë€ìí íí륌 ê°ì§ ì ììµëë€. ìì±ë ìœëë ìíë êž°ë¥ì ì€ííêž° ìíŽ ì»ŽíìŒëê±°ë ìží°í늬ížë ì ììµëë€.
ì¬ë¬ ë°ìŽí°ë² ìŽì€ í ìŽëžì ëíŽ ë€ìì ë°ìŽí° ì ê·Œ ê°ì²Ž(DAO)륌 ë§ë€ìŽìŒ íë ìë늬ì€ë¥Œ ìê°íŽ ëŽ ìë€. ëìŒí ìì©êµ¬ ìœë륌 ë°ë³µì ìŒë¡ ìì±íë ëì , í ìŽëž ì€í€ë§ë¥Œ ì ë ¥ìŒë¡ ë°ì íŽë¹ DAO ìœë륌 ìì±íë í í늿ì ì ìí ì ììµëë€. ìŽ ì ê·Œ ë°©ìì ê°ë° ìê°ì í¬ê² ëšì¶íê³ ì€ë¥ì ìíì ìµìíí©ëë€.
ìœë ìì±ì ìŽì
- ìì°ì± í¥ì: ë°ë³µì ìž ìœë© ìì ì ìëííì¬ ê°ë°ìê° ìíížìšìŽ ê°ë°ì ë ë³µì¡íê³ ì°œìì ìž ìž¡ë©Žì ì§ì€í ì ìëë¡ í©ëë€.
- ì€ë¥ ê°ì: ìì±ë ìœëë ìŒë°ì ìŒë¡ ì§ì ìì±í ìœëë³Žë€ ë ìŒêŽì±ìŽ ìê³ ì¬ëì ì€ìì ë ì·šìœí©ëë€.
- ì ì§ë³Žìì± í¥ì: Ʞ볞 ëª ìžì ë³ê²œ ì¬íì ìì±ë ìœëì ìœê² ì íí ì ììŽ ì ì§ë³Žì ë° ì ë°ìŽížì íìí ë žë ¥ì ì€ìŒ ì ììµëë€.
- ìŒêŽì± ê°í: ìœë ìì±ì ìœëê° ìŒêŽë ì€íìŒê³Œ 구조륌 ë°ë¥Žëë¡ ë³Žì¥íì¬ ê°ë ì±ê³Œ ì ì§ë³Žìì±ì í¥ììíµëë€.
- ìì¥ ì¶ì ìê° ëšì¶: ê°ë° íë¡ìžì€ë¥Œ ê°ìííšìŒë¡ìš ìœë ìì±ì ì¡°ì§ìŽ ì íì ë 빚늬 ìì¥ì ì¶ìíë ë° ëììŽ ë ì ììµëë€.
- ì¶ìí ë° DSL: ìœë ìì±ì ëë©ìž í¹í ìžìŽ(DSL)ì ë ëì ìì€ì ì¶ìí륌 ì¬ì©í ì ìê² íì¬, ê°ë°ìê° ë®ì ìì€ì 구í ìžë¶ ì¬í볎ë€ë ë¹ìŠëì€ ë¡ì§ì ì§ì€í ì ìëë¡ í©ëë€.
í í늿 ìì€í : ìœë ìì±ì íµì¬
í í늿 ìì§ìŽëŒê³ ë ìë €ì§ í í늿 ìì€í ì í í늿곌 ë°ìŽí°ë¥Œ ê²°í©íì¬ ìì€ ìœëì ê°ì ì¶ë ¥ 묞ì륌 ìì±íë ìíížìšìŽ ë구ì ëë€. í í늿ì 볞ì§ì ìŒë¡ ìì± ê³Œì ìì ìœì ë ë°ìŽí°ì íë ìŽì€íë륌 í¬íšíë ì²ì¬ì§ì ëë€.
í í늿 ìì€í ì íµì¬ êµ¬ì± ììë ë€ì곌 ê°ìµëë€:
- í í늿 ìžìŽ: í í늿ì 구조ì ë¡ì§ì ì ìíë ë° ì¬ì©ëë í¹ì ìžìŽì ëë€. ìŽ ìžìŽë ìŒë°ì ìŒë¡ ë³ì ì¹í, 조걎묞, 룚í ë° êž°í ì ìŽ êµ¬ì¡°ë¥Œ ìí êž°ë¥ì í¬íší©ëë€.
- í í늿 ìì§: í í늿곌 ë°ìŽí°ë¥Œ ì²ëЬíì¬ ìµì¢ ì¶ë ¥ì ìì±íë ìíížìšìŽ êµ¬ì± ììì ëë€. í í늿 ìžìŽë¥Œ íì±íê³ , ííìì íê°íë©°, ë°ìŽí°ë¥Œ ì ì í íë ìŽì€íëì ìœì í©ëë€.
- ë°ìŽí° ìì€: í í늿ì ì±ì°ë ë° ì¬ì©ë ë°ìŽí°ì ìì€ì ëë€. ìŽë ë°ìŽí°ë² ìŽì€, ì€ì íìŒ ëë ë€ë¥ž ë°ìŽí° êµ¬ì¡°ìŒ ì ììµëë€.
í í늿 ìì€í ì ìë ë°©ì
í í늿 ìì€í ì ì¬ì©í ìœë ìì± íë¡ìžì€ë ìŒë°ì ìŒë¡ ë€ì ëšê³ë¥Œ í¬íší©ëë€:
- í í늿 ì ì: ìì±ë ìœëì 구조ì ë¡ì§ì ì§ì íë í í늿ì ë§ëëë€. ë°ìŽí°ê° ìœì ë ìì¹ë¥Œ ëíëŽêž° ìíŽ íë ìŽì€íë륌 ì¬ì©í©ëë€.
- ë°ìŽí° ì ê³µ: í í늿ì ì±ì°ë ë° ì¬ì©ë ë°ìŽí°ë¥Œ ì€ë¹í©ëë€. ìŽ ë°ìŽí°ë ë°ìŽí°ë² ìŽì€ìì ê²ìíê±°ë, ì€ì íìŒìì ìœê±°ë, íë¡ê·žëë° ë°©ììŒë¡ ìì±í ì ììµëë€.
- í í늿 ì²ëЬ: í í늿 ìì§ì ì¬ì©íì¬ í í늿곌 ë°ìŽí°ë¥Œ ì²ëЬíê³ ìµì¢ ìœë륌 ìì±í©ëë€.
- ìì±ë ìœë ì ì¥: ìì±ë ìœë륌 íìŒì ì ì¥íê±°ë íë¡ì ížì íµí©í©ëë€.
ìì : ê°ëší ìë° íŽëì€ ìì±íêž°
ê°ìì í í늿 ìì€í ì ì¬ì©íì¬ ìë° íŽëì€ë¥Œ ìì±íë ê°ëší ìì ë¡ íë¡ìžì€ë¥Œ ì€ëª íŽ ë³Žê² ìµëë€.
í í늿 (JavaClass.template):
public class ${className} {
private String ${propertyName};
public ${className}(String ${propertyName}) {
this.${propertyName} = ${propertyName};
}
public String get${PropertyName}() {
return ${propertyName};
}
public void set${PropertyName}(String ${propertyName}) {
this.${propertyName} = ${propertyName};
}
}
ë°ìŽí°:
{
"className": "MyClass",
"propertyName": "myProperty"
}
ìì±ë ìœë:
public class MyClass {
private String myProperty;
public MyClass(String myProperty) {
this.myProperty = myProperty;
}
public String getMyProperty() {
return myProperty;
}
public void setMyProperty(String myProperty) {
this.myProperty = myProperty;
}
}
ìŽ ìì ìì í í늿ì íë ìŽì€íë(ì: `${className}`, `${propertyName}`)륌 í¬íšíë©°, ìŽë€ì ìì± ê³Œì ìì ë°ìŽí° ìì€ì íŽë¹ ê°ìŒë¡ ë첎ë©ëë€.
ë늬 ì¬ì©ëë í í늿 ìì€í
ìë§ì í í늿 ìì€í ìŽ ììŒë©°, ê°ê° ê³ ì í ê°ì 곌 ìœì ì ê°ì§ê³ ììµëë€. ë€ìì ëª ê°ì§ ìžêž° ìë ìµì ì ëë€:
Velocity
Apache Velocityë ê°ëšíê³ ê°ë ¥í í í늿 ìžìŽë¥Œ ì ê³µíë ë늬 ì¬ì©ëë ìë° êž°ë° í í늿 ìì§ì ëë€. ì¹ íìŽì§, SQL 쿌늬 ë° êž°í ì íì í ì€íž êž°ë° ì¶ë ¥ì ìì±íë ë° ì죌 ì¬ì©ë©ëë€.
ìì : Velocity í í늿
#if( $customer.hasPurchased($item) ) $customer.Name, thank you for purchasing $item.Name! #end
Jinja2
Jinja2ë íìŽì¬ì ìí ìžêž° ìê³ ì ì°í í í늿 ìì§ì ëë€. ííë ¥ìŽ íë¶í 구묞곌 í í늿 ìì, íí°, ë§€í¬ë¡ ë± ë€ìí êž°ë¥ì ì§ìíë ê²ìŒë¡ ìë €ì ž ììµëë€. Jinja2ë ìŒë°ì ìŒë¡ ì¹ íìŽì§, ì€ì íìŒ ë° ìœë륌 ìì±íë ë° ì¬ì©ë©ëë€.
ìì : Jinja2 í í늿
Welcome {{ user.name }}!
-
{% for item in items %}
- {{ item.name }} {% endfor %}
Mustache
Mustacheë ëšìì±ê³Œ ìŽìì±ì ê°ì¡°íë ë¡ì§ ìë(logic-less) í í늿 ìì§ì ëë€. ìµìíì êž°ë¥ ì§í©ì ì§ìíì¬ ë°°ì°ê³ ì¬ì©íêž° ìœìµëë€. Mustacheë ìë°ì€í¬ëŠœíž, 룚ë¹, íìŽì¬ì í¬íší ì¬ë¬ íë¡ê·žëë° ìžìŽìì ì¬ì©í ì ììµëë€.
ìì : Mustache í í늿
Hello {{name}}!
{{#items}}
Handlebars
Handlebarsë Mustache í í늿곌 ê±°ì ížíëë ìë§ší± ì¹ í í늿 ìì§ì ëë€. í í늿 ëŽìì ë ë³µì¡í ë¡ì§ì íì©íë í¬íŒ(helper)ë¡ Mustache륌 íì¥í©ëë€.
ìì : Handlebars í í늿
Hello {{name}}!
-
{{#each items}}
- {{this.name}} {{/each}}
Freemarker
FreeMarkerë ìë°ë¡ ìì±ë í í늿 ìì§ìŒë¡, ë¬Žë£ ë²ì© í í늿 ì²ëЬ ìì§ì ëë€. ìŒë°ì ìŒë¡ HTML ì¹ íìŽì§ë¥Œ ìì±íë ë° ì¬ì©ëì§ë§, ìì€ ìœë, ì€ì íìŒ, ìŽë©ìŒ ë©ìì§ ë±ì ìì±í ìë ììµëë€.
ìì : FreeMarker í í늿
Welcome ${user}!
-
<#list products as product>
- ${product.name} (${product.price?string.currency}) #list>
ìœë ìì±ì ìí ëªšë² ì¬ë¡
ìœë ìì±ì ìŽì ì ê·¹ëííë €ë©Ž ëª ê°ì§ ëªšë² ì¬ë¡ë¥Œ ë°ë¥Žë ê²ìŽ ì€ìí©ëë€:
- í í늿ì ëšìíê² ì ì§íêž°: í í늿ì ë³µì¡í ë¡ì§ì íŒíìžì. ëì ë³µì¡í ê³ì°ê³Œ ë°ìŽí° ë³íì í íëŠ¿ì© ë°ìŽí°ë¥Œ ì€ë¹íë ìœëë¡ ì®êž°ìžì.
- í í늿 ìì ì¬ì©íêž°: í í늿 ììì íì©íì¬ ì¬ì¬ì© ê°ë¥í í í늿ì ë§ë€ê³ ìœë ì€ë³µì ì€ìŽìžì.
- ìì±ë ìœë í ì€ížíêž°: ìì±ë ìœë륌 ë€ë¥ž ìœëì ë§ì°¬ê°ì§ë¡ ì·šêžíê³ ì² ì í í ì€ížë¥Œ ê±°ì¹ìžì.
- í í늿 ë²ì êŽëЬíêž°: í í늿ì ë²ì êŽëЬ ìì€í ì ì ì¥íì¬ ë³ê²œ ì¬íì ì¶ì íê³ íì ì ê°ë¥íê² íìžì.
- í í늿 묞ìííêž°: í í늿ì 목ì , 구조 ë° ì¬ì©ë²ì 묞ìííì¬ ì ì§ë³Žìì±ì í¥ììí€ìžì.
- ìœë ì€íìŒ ê°ìŽë ì¬ì©íêž°: ìœë ìì± í í늿ì ë§ë€ ë ìœë ì€íìŒ ê°ìŽë륌 ì ì©íìžì. ìì±ë ìœëê° ì 묞ì ìŒë¡ 볎ìŽê³ ìœê³ ìŽíŽíêž° ìœëë¡ íë ê²ìŽ ì€ìí©ëë€.
- "DRY"(ë°ë³µíì§ ë§ ê²) ìì¹ ê³ ë €íêž°: ìœë ìì±ì 죌ì 목í ì€ íëë ìœë ì€ë³µì íŒíë ê²ì ëë€. íšìšì±ê³Œ ì ì§ë³Žìì±ì 볎ì¥íë €ë©Ž DRY ìì¹ì ì€ìíë ê²ìŽ ì€ìí©ëë€.
- ìœë ìì± íë¡ìžì€ ìëííêž°: ìœë ìì± íë¡ìžì€ë¥Œ ë¹ë íìŽíëŒìžì íµí©íì¬ ìœë ìì±ì ìëííìžì.
- ìŒêŽë ëª ëª ê·ì¹ ì¬ì©íêž°: í í늿ì ë³ìì ëíŽ ìŒêŽë ëª ëª ê·ì¹ì ì¬ì©íë ê²ìŽ ì€ìí©ëë€. ìŒêŽë ìŽëŠ ì§ì ì í í늿 ê°ë ì±ì í¥ììíµëë€.
- ìì± ì ë°ìŽí° ì íšì± ê²ì¬íêž°: ë°íì ì€ë¥ë¥Œ ë°©ì§íêž° ìíŽ ìœë ìì±ì ììíêž° ì ì 몚ë ì ë ¥ ë°ìŽí°ì ì íšì±ì ê²ì¬íìžì.
ìœë ìì±ì ì¬ì© ì¬ë¡
ìœë ìì±ì ë€ì곌 ê°ì ë€ìí ìë늬ì€ì ì ì©ë ì ììµëë€:
- ë°ìŽí° ì ê·Œ ê°ì²Ž(DAO): ì¬ë¬ ë°ìŽí°ë² ìŽì€ í ìŽëžì ëí DAO ìì±.
- ì¹ ìë¹ì€ íŽëŒìŽìžíž: ì¹ ìë¹ì€ì ìíž ìì©íêž° ìí íŽëŒìŽìžíž ìœë ìì±. ì륌 ë€ìŽ, WSDL(Web Services Description Language) íìŒì êž°ë°ìŒë¡ íŽëŒìŽìžíž ëŒìŽëžë¬ëЬ ìì±.
- ì€ì íìŒ: ë€ìí í겜(ì: ê°ë°, í ì€íž, íë¡ëì )ì ëí ì€ì íìŒ ìì±.
- 묞ì: ìœë 죌ììŽë êž°í ë©íë°ìŽí°ë¡ë¶í° 묞ì ìì±. ì륌 ë€ìŽ, Javadoc(ìë°ì©)ìŽë Sphinx(íìŽì¬ì©)ì ê°ì ë구륌 ì¬ì©íì¬ ìœë 죌ììì API 묞ì ìì±.
- ì¬ì©ì ìží°íìŽì€: UI ëììž ëª ìžë¡ë¶í° UI ìœë ìì±.
- ìí ëšžì : ìí ë€ìŽìŽê·žëšìŒë¡ë¶í° ìí ëšžì ì© ìœë ìì±.
- ìœë ì€ìºíŽë©: Ʞ볞 íë¡ì íž êµ¬ì¡° ë° íìŒ ìì±. Ruby on Railsë Spring Bootì ê°ì ë§ì íë ììí¬ë íë¡ì íž ê³šê²©ì ë§ë€êž° ìí CLI ë구륌 ì ê³µí©ëë€.
- íë¡í ìœ ë²íŒ ë° gRPC: íë¡í ìœ ë²íŒ ì ì íìŒìì ìœë륌 ìì±íì¬ ë°ìŽí° 구조 ë° ìë¹ì€ ìží°íìŽì€ ì ì.
- êŽì ì§í¥ íë¡ê·žëë°(AOP): ë¡ê¹ , 볎ì ëë ížëìì êŽëЬì ê°ì í¡ëš êŽì¬ì¬ë¥Œ ì²ëЬíêž° ìí ì ì€ííž(aspect) ìì±.
ìœë ìì± ë구 ë° íë ììí¬
ë²ì© í í늿 ìì§ ìžìë í¹ì 컚í ì€ížìì ìœë ìì±ì ì©ìŽíê² íë ì¬ë¬ ì 묞 ë구 ë° íë ììí¬ê° ììµëë€:
- Yeoman: ì íë¡ì ížë¥Œ ë§ë€ê³ í í늿ì êž°ë°ìŒë¡ ìœë륌 ìì±íë ì€ìºíŽë© ë구.
- Swagger/OpenAPI Generator: OpenAPI ëª ìžë¡ë¶í° ìë² ì€í ë° íŽëŒìŽìžíž SDK ìì±.
- MyBatis Generator: ë°ìŽí°ë² ìŽì€ ì€í€ë§ë¡ë¶í° MyBatis ë§€íŒ íìŒ ìì±.
- Hibernate Tools: ë°ìŽí°ë² ìŽì€ ì€í€ë§ë¡ë¶í° Hibernate ë§€í íìŒ ë° ìë° íŽëì€ ìì±.
- JHipster: Spring Boot ë° Angular/React/Vue.js륌 ì¬ì©íì¬ ìµì ì¹ ì í늬ìŒìŽì ì ìì±íêž° ìí ê°ë° íë«íŒ.
ìœë ìì±ì 곌ì
ìŽì ìë ë¶êµ¬íê³ ìœë ìì±ì ëª ê°ì§ 곌ì ë ì ìí©ëë€:
- í í늿 ë³µì¡ì±: ë³µì¡í í í늿ì ì ì§ë³Žì ë° ëë²ê¹ ìŽ ìŽë €ìž ì ììµëë€.
- ìì±ë ìœë ëë²ê¹ : ìì±ë ìœë륌 ëë²ê¹ íë ê²ì ìŽë €ìž ì ììŒë©°, í¹í í íëŠ¿ìŽ ë³µì¡íê±°ë ìì±ë ìœëê° ì¬íê² ìµì íë ê²œì° ëì± ê·žë ìµëë€.
- í í늿 ì ì§ë³Žì: Ʞ볞 ëª ìžì ë³ê²œ ì¬íì ë§ì¶° í í늿ì ìµì ìíë¡ ì ì§íë ê²ì ìê°ìŽ ë§ìŽ ê±žëŠŽ ì ììµëë€.
- íìµ ê³¡ì : ìë¡ìŽ í í늿 ìžìŽë ìœë ìì± ë구륌 ë°°ì°ë ë° ìë¹í ìê°ê³Œ ë žë ¥ìŽ íìí ì ììµëë€.
- 곌ëí ì졎: ìœë ìì±ì 곌ëíê² ì¬ì©íì¬ ì ì°ì±ìŽ ëšìŽì§ê³ ì ì°íì§ ìê³ ì ì§ë³Žìíêž° ìŽë €ìŽ ìœë륌 ìì±í ê°ë¥ì±ìŽ ëìì§ ì ììµëë€.
ìœë ìì±ì 믞ë
ìœë ìì±ì 믞ëì ìíížìšìŽ ê°ë°ìì ì ì ë ì€ìí ìí ì í ê°ë¥ì±ìŽ ëìµëë€. ìíížìšìŽ ìì€í ìŽ ëì± ë³µì¡íŽì§ì ë°ëŒ ìëíì íšìšì±ì ëí ì구ë ê³ìíŽì ìŠê°í ê²ì ëë€. ìžê³µì§ë¥(AI) ë° ëšžì ë¬ë(ML)ì ë°ì ì ìœë ìì±ì ëì± íì íì¬ íšì¬ ë ì êµíê³ ë§ì¶€íë ìœë ìì±êž°ì ìì±ì ê°ë¥íê² í ì ììµëë€. ìŽë ìì ìì€ì ëª ìžë¡ë¶í° ì 첎 ì í늬ìŒìŽì ì ìëìŒë¡ ìì±í ì ìë ëêµ¬ë¡ ìŽìŽì ž, ìíížìšìŽ ê°ë°ì íìí ìê°ê³Œ ë žë ¥ì í¬ê² ì€ìŒ ì ììµëë€.
구첎ì ìŒë¡ 죌목íŽìŒ í ëª ê°ì§ ë¶ìŒë ë€ì곌 ê°ìµëë€:
- AI êž°ë° ìœë ìì±: ìì°ìŽ ì€ëª ìŽë ìê°ì 몚ëžìì ìœë륌 ìì±íêž° ìíŽ AI ì¬ì©.
- ëªšëž ì£Œë ê°ë°(MDD): ìì€í ì ì¶ì 몚ëžìì ìœë ìì±.
- ë¡ì°ìœë/ë žìœë íë«íŒ: ì¬ì©ìê° ìµìíì ìœë© ëë ìœë© ììŽ ì í늬ìŒìŽì ì ë§ë€ ì ìëë¡ íë íë«íŒ.
ê²°ë¡
í í늿 ìì€í ì ì¬ì©í ìœë ìì±ì ìíížìšìŽ ê°ë° ìì°ì±ì í¥ììí€ê³ , ì€ë¥ë¥Œ ì€ìŽë©°, ì ì§ë³Žìì±ì ëìŽë ê·ì€í êž°ì ì ëë€. ê°ë , ìŽì , ëªšë² ì¬ë¡ ë° ì¬ì© ê°ë¥í ë구륌 ìŽíŽíšìŒë¡ìš ê°ë°ìë ìœë ìì±ì íšê³Œì ìŒë¡ íì©íì¬ ìì íëŠì ê°ìííê³ ê³ íì§ ìíížìšìŽë¥Œ 구ì¶í ì ììµëë€. ìíížìšìŽ ê°ë° íê²œìŽ ê³ì ì§ííšì ë°ëŒ ìœë ìì±ì ê°ë° íë¡ìžì€ì íšì¬ ë ì€ìí êµ¬ì± ììê° ë ì€ë¹ê° ëìŽ ììµëë€.
ìëíì íì ë°ííê³ ë ëì ìíížìšìŽë¥Œ ë 빚늬 구ì¶íêž° ìíŽ ìœë ìì±ì ì±ííìžì. ìí¬íë¡ì°ë¥Œ ê°ìííê³ ì 뢰í ì ìê³ ì ì§ë³Žì ê°ë¥í ìœë륌 ë§ë€êž° ìíŽ í í늿 ìì€í ìŽë ì 묞 ë구륌 ì±ííë ê²ì ê³ ë €íŽ ë³Žìžì. ìì¹ì ìŽíŽíê³ íšê³Œì ìŒë¡ ì ì©íšìŒë¡ìš ê°ë° êŽíì í¥ììí€ê³ ìë¡ìŽ ìì€ì íšìšì±ì ë¬ì±í ì ììµëë€.